home *** CD-ROM | disk | FTP | other *** search
-
- vwait cmpi.b #255,$dff006 ; wait for vpos
- bne.s vwait
-
- bsr joycontrol ; call joystick reader routine
- bsr checkjoy ; lets investigate what was pressed
-
- btst.b #6,$bfe001 ; left mouse
- bne.s vwait
- rts
-
- *****************************************************************************
- * JOYCONTROL: Allows easy detection of Joystick movements
- * -------------------------------------------------------
- * The routine checks movement & sets bits so that detection of directional
- * joystick movement is possible.
- *
- * INPUTS: Joystick movements. No Parameters need setting
- * OUTPUTS: d2 - bits set corresponding to movements. See Example!
- *****************************************************************************
- Fire = 0
- Left = 1
- Right = 2
- Up = 3
- Down = 4
-
- JoyControl: lea $dff000,a5 ; ptr to hardware registers in a5
- moveq #0,d2 ; erase all previous joystick settings
- tst.b $bfe001 ; check if fire pressed..
- bmi.s NoFire ; was fire button pressed?
- bset #Fire,d2 ; set 'fire' button as being pressed!
- NoFire: move.w $c(a5),d0 ; read joy0dat, put into d0
- btst #1,d0 ; was 'right' pressed with joystick?
- beq.s TstLeft ; if=0 not set, lets check left...
- bset #Right,d2 ; set 'right' movement as being pressed
- bra.s TstDown ; lets test Up/Down Movements aswell!
- TstLeft btst #9,d0 ; was 'Left' movement set?
- beq.s TstDown ; lets check down movement..
- bset #Left,d2 ; set 'Left' movement bit
- TstDown move.w d0,d1 ; make copy of joydat, puts it into d1
- lsr.w #1,d1 ; divide by two..
- eor.w d0,d1 ; exclusive or together, up/donw in d1
- btst #0,d1 ; was 'Down' movement selected?
- beq.s TstUp ; lets check up movement...
- bset #Down,d2 ; set 'down' movement bit
- rts ; exit routine..
- TstUp btst #8,d1 ; was up movement selected?
- beq.s NoActivity ; no movement occured with joystick...
- bset #up,d2 ; 'up' movement was selected.. set bit
- NoActivity rts ; exit routine..
-
- *******************************************************************************
- * d2=movement bits... as set by 'JoyControl' routine
-
- CheckJoy btst #Fire,d2
- beq.s NotFire
- move.w #$f0f,$180(a5) ;routine to call, fire was pressed
-
- NotFire btst #Left,d2
- beq.s NoLeft
- move.w #$f00,$180(a5) ;left
-
- NoLeft btst #Right,d2
- beq.s NoRight
- move.w #$ff0,$180(a5) ;right
-
- NoRight btst #Up,d2
- beq.s NoUp
- move.w #$fff,$180(a5) ;up
-
- NoUp btst #Down,d2
- beq.s NoDown
- move.w #$00f,$180(a5) ;down
- NoDown rts
-
-